MVVM প্যাটার্নে UI কাস্টমাইজেশন এবং ডেটার উপস্থাপন করার জন্য DataTemplate এবং ControlTemplate খুবই গুরুত্বপূর্ণ দুটি টেমপ্লেট। এই দুটি টেমপ্লেটের মাধ্যমে আপনি View এর কন্ট্রোল এবং ডেটার উপস্থাপন পরিবর্তন করতে পারবেন। নিচে DataTemplate এবং ControlTemplate এর ব্যবহারের বিস্তারিত ব্যাখ্যা দেওয়া হলো।
DataTemplate একটি XAML উপাদান যা UI তে ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়। এটি Model এর ডেটাকে View এর জন্য উপযুক্তভাবে উপস্থাপন করতে সাহায্য করে। সাধারণত DataTemplate ব্যবহার করা হয় যখন আপনি ListView, ListBox, ComboBox অথবা অন্যান্য ডেটাবাউন্ড কন্ট্রোলের মধ্যে ডেটা উপস্থাপন করতে চান।
ধরা যাক, আপনার একটি Product ক্লাস আছে, যেখানে Name এবং Price প্রপার্টি রয়েছে। এই Product ডেটাকে ListBox-এ উপস্থাপন করতে DataTemplate ব্যবহার করা হবে।
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}
এখন, XAML এ এই ডেটা DataTemplate ব্যবহার করে উপস্থাপন করা হবে:
<Window.Resources>
<DataTemplate x:Key="ProductTemplate">
<StackPanel>
<TextBlock Text="{Binding Name}" FontSize="18"/>
<TextBlock Text="{Binding Price, StringFormat={}{0:C}}" FontSize="14"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<ListBox ItemsSource="{Binding Products}" ItemTemplate="{StaticResource ProductTemplate}" />
এখানে:
ControlTemplate হল একটি UI কন্ট্রোলের কাঠামো বা চেহারা সম্পূর্ণভাবে কাস্টমাইজ করার উপায়। এটি UI কন্ট্রোলের চেহারা পরিবর্তন করে, কিন্তু তার কার্যকারিতা বা লজিক অপরিবর্তিত রাখে। ControlTemplate ব্যবহারের মাধ্যমে, আপনি কন্ট্রোলের উপস্থাপন এবং স্টাইল সম্পূর্ণভাবে কাস্টমাইজ করতে পারেন।
ধরা যাক, আপনি একটি Button কন্ট্রোলের স্টাইল পরিবর্তন করতে চান, এবং সেই Button-এ কাস্টম গ্রাফিক্যাল উপস্থাপন করতে চান। আপনি এটি ControlTemplate এর মাধ্যমে করতে পারেন।
<Button Content="Click Me" Width="200" Height="50">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Fill="LightBlue" Width="200" Height="50" />
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
এখানে:
DataTemplate এবং ControlTemplate এর মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে:
এগুলি ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের UI এবং UX কে আরও ইউজার-ফ্রেন্ডলি এবং কাস্টমাইজড করতে পারবেন।
common.read_more